package com.wswy.wzcx.module.base

import android.arch.lifecycle.ViewModel
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import org.greenrobot.eventbus.EventBus

open class BaseViewModel : ViewModel() {

    private val disposable = CompositeDisposable()

    open fun onCreate(){
        if (autoRegisterEvent()){
            registerEvent()
        }
    }


    /**
     * 当前页面的RX时间都加入进来，避免内存泄露
     */
    fun addRun( d: Disposable?){
        d?.let {
            disposable.add(d)
        }
    }
    override fun onCleared() {
        super.onCleared()
        disposable.clear()
        if (autoRegisterEvent()){
            unregisterEvent()
        }
    }

    open fun autoRegisterEvent()=false

    fun registerEvent(){
        if (!EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().register(this)
        }
    }

    fun unregisterEvent(){
        if (EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().unregister(this)
        }
    }

}